package com.cnzhy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * @EnableZuulProxy - 开启Zuul网关。
 * 当前应用是一个Zuul微服务网关。会在Eureka注册中心中注册当前服务。并发现其他的服务。
 * Zuul需要的必要依赖是spring-cloud-starter-zuul。
 *
 * Zuul：
 * 使用的是阻塞式的 API，不支持长连接，比如 WebSocket。
 * 底层是servlet，Zuul处理的是http请求
 * 没有提供异步支持，流控等均由hystrix支持。
 * 依赖包spring-cloud-starter-netflix-zuul。
 *
 * Gateway：
 * Spring Boot和Spring Webflux提供的Netty底层环境，不能和传统的Servlet容器一起使用，也不能打包成一个WAR包。
 * 依赖spring-boot-starter-webflux 和 spring-cloud-starter-gateway
 * 提供了异步支持，提供了抽象负载均衡，提供了抽象流控，并默认实现了RedisRateLimiter。
 *
 * @Author: zhaoyan5
 */
@SpringBootApplication
@EnableZuulProxy
@EnableHystrixDashboard
@EnableCircuitBreaker
//@EnableFeignClients
public class ZuulServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulServerApplication.class, args);
    }

}
